package com.base.cn.platform.os.service.manage.loreset;

import com.base.cn.platform.os.service.FeignAuthConfig;
import com.base.cn.platform.os.service.manage.BaseService;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 知识体系Service
 * @author s.li
 * @create 2018-03-23 10:15
 */
@FeignClient(name = BaseService.appName,configuration = FeignAuthConfig.class)
public interface LoresetService extends BaseService {

    /**
     * 保存知识体系数据
     * @param loreset
     * @return
     */
    @RequestMapping(contextPath+"/saveLoreset")
    Map<String,Object> saveLoreset(@RequestBody Map<String, Object> loreset);

    /**
     * 查询分页知识体系列表
     * @param loreset 查询条件
     * @param subjectData 是否获取专业数据
     * @param sysUserData 是否获取创建用户数据
     * @param pointData 是否获取知识点数据
     * @return Map<String,Object>
     */
    @RequestMapping(contextPath+"/findLoresetList")
    List<Map<String,Object>> findLoresetList(@RequestBody Map<String, Object> loreset,
                                             @RequestParam("subjectData") boolean subjectData,
                                             @RequestParam("sysUserData") boolean sysUserData,
                                             @RequestParam("pointData") boolean pointData);

    /**
     * 查询分页知识体系列表
     * @param loreset 查询条件
     * @param currentPage 页码
     * @param subjectData 是否获取专业数据
     * @param sysUserData 是否获取创建用户数据
     * @param pointData 是否获取知识点数据
     * @return Map<String,Object>
     */
    @RequestMapping(contextPath+"/findLoresetListPage")
    Map<String,Object> findLoresetListPage(@RequestBody(required = false) Map<String, Object> loreset,
                                           @RequestParam("currentPage") int currentPage,
                                           @RequestParam("subjectData") boolean subjectData,
                                           @RequestParam("sysUserData") boolean sysUserData,
                                           @RequestParam("pointData") boolean pointData);

    /**
     * 获取知识体系数据
     * @param loresetId 知识体系ID
     * @param subjectData 是否获取专业数据
     * @param sysUserData 是否获取创建用户数据
     * @param pointData 是否获取知识点数据
     * @return Loreset
     */
    @RequestMapping(contextPath+"/findLoresetById")
    Map<String,Object> findLoresetById(@RequestParam("lorestId") BigDecimal loresetId,
                                       @RequestParam("subjectData") boolean subjectData,
                                       @RequestParam("sysUserData") boolean sysUserData,
                                       @RequestParam("pointData") boolean pointData);

    /**
     * 通过ID串
     * @param ids 知识体系ID串
     * @param subjectData 是否设置专业数据，true设置，false不设置
     * @param sysUserData 是否设置创建人数据，true设置，false不设置
     * @param pointData 是否设置知识点数据，true设置，false不设置
     * @return 知识体系map key:知识体系id value:知识体系
     */
    @RequestMapping(contextPath + "/findLorestListByIdsToMap")
    Map<BigDecimal, Map<String, Object>> findLorestListByIdsToMap(@RequestParam("ids") String ids,
                                                                  @RequestParam("subjectData") boolean subjectData,
                                                                  @RequestParam("sysUserData") boolean sysUserData,
                                                                  @RequestParam("pointData") boolean pointData);

    /**
     * 修改知识体系状态
     * @param loresetIds 知识体系ID串
     * @param status 状态，1正常，2禁用
     * @return Map<String,Object>
     */
    @RequestMapping(contextPath+"/updateLoresetStatus")
    Map<String,Object> updateLoresetStatus(@RequestParam("loresetIds") String loresetIds,
                                           @RequestParam("status") int status);

    /**
     * 获取知识体系下的知识点，且分层（用于考试）
     * @param subjectIds 专业ID
     * @return List<SysLoresetPoint>
     */
    @RequestMapping(contextPath + "/findLayeredSysExamLoresetPointList")
    List<Map<String,Object>> findLayeredSysExamLoresetPointList(@RequestParam("subjectIds") String subjectIds,
                                                                @RequestParam("loresetData") boolean loresetData);

    /**
     * 删除知识体系
     * @param loresetIds 知识体系ID串
     * @return Map<String,Object>
     */
    /*@RequestMapping(contextPath+"/deleteLoreset")
    Map<String,Object> deleteLoreset(@RequestParam("loresetIds") String loresetIds);*/
}
